home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 46
/
Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso
/
-in_the_mag-
/
synth_studies
/
resgrep03b
/
source
/
utils.cc
< prev
next >
Wrap
C/C++ Source or Header
|
1999-09-15
|
2KB
|
109 lines
/*
* Kleine Utilities, die das Leben leichter machen (ganz ohne Zucker.)
*
* 22.03.1992 Andre geschrieben.
*/
extern "C" {
#include <exec/types.h>
#include <libraries/asl.h>
#include <dos/var.h>
};
#include "list.h"
#include "utils.h"
extern "C" {
#include <clib/asl_protos.h>
char *strdup(char *);
};
/* Wandelt einen PASCAL-String in einen C-String um. */
char *pstr2cstr(void *p)
{
int index;
char *pa=(char *)p;
static char buffer[256]; /* Maximale Länge eines PASCAL-Strings */
for(index=0; index<*((char *)p); index++)
buffer[index]=pa[index+1];
buffer[index]='\0';
return buffer;
}
// Wandelt einen gepackten Typ in einen C-String um.
char *pack2cstr(unsigned long p)
{
static unsigned long pa[2];
pa[1]=0;
pa[0]=p;
return (char *)pa;
}
// Wandelt einen C-String in einen Type um.
unsigned long cstr2pack(char *s)
{
unsigned long p;
char *pp;
pp=(char *)&p;
pp[0]=s[0];
pp[1]=s[1];
pp[2]=s[2];
pp[3]=s[3];
return p;
}
// Holt einen File-Namen vom ASL-Requester
char *ASLGetName(void)
{
BOOL ret;
char buffer[1024];
int len;
buffer[0]='\0';
if( AslRequestTags(fr, ASL_Hail, "ResGrep", TAG_DONE) )
{
// Den FileNamen zusammenpuzzlen.
strcpy(buffer,(char *)(fr->rf_Dir));
len=strlen(buffer);
if( len!=0 && *(buffer+len)!='/' && *(buffer+len)!=':' )
*(buffer+len++)='/';
strcpy(buffer+len,(char *)(fr->rf_File));
}
return strdup(buffer);
}
// Fensterkoordinatenberechnung
static int XPos=30;
static int YPos=30;
int NewXPos(void)
{
return XPos;
}
int NewYPos(void)
{
return YPos;
}
void CoordsUsed(void)
{
XPos= (XPos+5)%550;
YPos= (YPos+14)%200;
}
// Berechnet eine neue Filenummer
unsigned long GetNewFileNum(void)
{
extern list FileList;
if( FileList.getfirst()->getsucc()!=NULL )
return FileList.getlast()->getpri()+1;
else
return 1;
}